package com.example.leetcode;

import java.util.HashMap;
import java.util.Map;

/**
 * 回旋镖问题
 * 给定平面上n 对 互不相同 的点points ，其中 points[i] = [xi, yi] 。回旋镖 是由点(i, j, k) 表示的元组 ，其中i和j之间的距离和i和k之间的距离相等（需要考虑元组的顺序）
 */
public class Demo0447 {

    public static void main(String[] args) {
        int[][] points=new int[][]{{0,0},{1,0},{0,1}};
        numberOfBoomerangs(points);
    }

    public static int numberOfBoomerangs(int[][] points) {
        int sum=0;
        for (int[] p : points) {
            Map<Integer, Integer> map = new HashMap();
            for (int[] q : points) {
                int dis=(p[0]-q[0])*(p[0]-q[0])+(p[1]-q[1])*(p[1]-q[1]);
                map.put(dis,map.getOrDefault(dis,0)+1);
            }
            for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                int m=entry.getValue();
                sum+=m*(m-1);
            }
        }
        return sum;
    }
}
